package com.example.echoewish.repository;

import com.example.echoewish.repository.network.UserServiceNetwork;
import com.example.echoewish.pojo.User;
import com.example.echoewish.util.LogUtil;

import java.io.File;

import retrofit2.Callback;

// 仓库类是为了 从  数据库 或者 网络 获取 数据
//注意仓库都是单例模式【必须是 多线程安全的单例】 所以采用饿汉模式启动
public class UserMessageRepository {

    private final static UserMessageRepository instance=new UserMessageRepository();

    public static UserMessageRepository getInstance()
    {
        return instance;
    }

    //进行新用户注册【只能从网络连接获取 以及请求数据】
    public void registerNewUsers(String account, String password, Callback callback)
    {
        try
        {
            UserServiceNetwork.registerNewUsers(account,password,callback);
            new LogUtil().d(LogUtil.GET_DATA_TAG,"用户注册调用时 发起网络请求成功");
        }
        catch (Exception e)
        {
            new LogUtil().w(LogUtil.GET_DATA_TAG,"用户注册调用时 发起网络请求失败");
        }
    }

    public void loginOn(String account, String password, Callback callback)
    {
        try
        {
            UserServiceNetwork.loginOn(account,password,callback);
            new LogUtil().d(LogUtil.GET_DATA_TAG,"用户登录接口调用时 发起网络请求成功");
        }
        catch (Exception e)
        {
            new LogUtil().w(LogUtil.GET_DATA_TAG,"用户登录接口调用时 发起网络请求失败");
        }
    }

    public void updateUserHeadImage(int userId, File image, Callback callback)
    {
        try
        {
            UserServiceNetwork.updateUserHeadImage(userId,image,callback);
            new LogUtil().d(LogUtil.GET_DATA_TAG,"更新用户头像接口调用时 发起网络请求成功");
        }
        catch (Exception e)
        {
            new LogUtil().w(LogUtil.GET_DATA_TAG,"更新用户头像接口调用时 发起网络请求失败");
        }
    }

    public void queryUserByUserId(int userId,Callback callback)
    {
        try
        {
            UserServiceNetwork.queryUserByUserId(userId,callback);
            new LogUtil().d(LogUtil.GET_DATA_TAG,"获取用户信息接口调用时 发起网络请求成功");
        }
        catch (Exception e)
        {
            new LogUtil().w(LogUtil.GET_DATA_TAG,"获取用户信息接口调用时 发起网络请求失败");
        }
    }

    public void updateUserInfo(User user, Callback callback)
    {
        try
        {
            UserServiceNetwork.updateUserInfo(user,callback);
            new LogUtil().d(LogUtil.GET_DATA_TAG,"更新用户信息接口调用时 发起网络请求成功");
        }
        catch (Exception e)
        {
            new LogUtil().w(LogUtil.GET_DATA_TAG,"更新用户信息接口调用时 发起网络请求失败");
        }
    }

    public void getFriendMessage(int userId,int friId,Callback callback)
    {
        try
        {
            UserServiceNetwork.getFriendMessage(userId,friId,callback);
            new LogUtil().d(LogUtil.GET_DATA_TAG,"获取朋友信息接口调用时 发起网络请求成功");
        }
        catch (Exception e)
        {
            new LogUtil().w(LogUtil.GET_DATA_TAG,"获取朋友信息接口调用时 发起网络请求失败");
        }
    }
}
